package exception;

import java.util.Scanner;

class RangeError extends RuntimeException {//进行派生使其为非检查异常
    RangeError(int n){
        super("超出范围的数值："+n);
    }//构造函数
}

class ParameterRangeError extends RangeError{
    ParameterRangeError(int n){super(n);}//调用构造函数构建详细消息为message的异常对象
}

class ResultRangeError extends RangeError{
    ResultRangeError(int n){super(n);}
}



class RangeErrorTester{
    //n为0~9吗？
    public  static boolean isValid(int n){
        return n>=0&&n<=9;
    }
    //计算0~9整数a与b的值
    public static int add(int a,int b){
        if (!isValid(a))throw new ParameterRangeError(a);
        if (!isValid(b))throw new ParameterRangeError(b);
        int result=a+b;
        if (!isValid(result))throw new ResultRangeError(result);
        return result;
    }

    public static void main(String[] args) {
        Scanner stdIn=new Scanner(System.in);
        System.out.println("整数a:");int a=stdIn.nextInt();
        System.out.println("整数b:");int b=stdIn.nextInt();
        try{
            System.out.println("他们的和为"+add(a,b)+".");
        }catch (ParameterRangeError e){
            System.out.println("加数超出范围."+e.getMessage());//这个方法来获取，显示详细的字符串，
        }catch (ResultRangeError e){
            System.out.println("计算结果超出范围"+e.toString());//使用toString来获取，显示简单的消息
        }

    }






}
